Efficient Predicate Dispatching
نویسندگان
چکیده
The speed of method dispatching is an important issue in the overall performance of object-oriented programs. We have developed an algorithm for constructing efficient dispatch functions for the general predicate dispatching model, which generalizes single dispatching, multiple dispatching, predicate classes and classifiers, and patternmatching. Our algorithm generates a lookup DAG each of whose nodes represents an N-way test of the class or value of a formal or other expression. Our algorithm implements each of these N-way tests with a binary decision tree blending class identity tests, class range tests, and table lookups. Our algorithm exploits any available static information (from type declarations or class analysis) to prune unreachable paths from the lookup DAG, and uses any available dynamic profile information to minimize the expected time to traverse the binary decision trees. We measure the effectiveness of our dispatching algorithms on a collection of large Cecil and Java programs, compiled by the Vortex optimizing compiler, showing improvements of up to 40% over already heavily optimized baseline versions.
منابع مشابه
Efficient Multiple and Predicate Dispatching
The speed of message dispatching is an important issue in the overall performance of object-oriented programs. We have developed an algorithm for constructing efficient dispatch functions that combines novel algorithms for efficient single dispatching, multiple dispatching, and predicate dispatching. Our algorithm first reduces methods written in the general predicate dispatching model (which g...
متن کاملPredicate Dispatching: A Unified Theory of Dispatch
Predicate dispatching generalizes previous method dispatch mechanisms by permitting arbitrary predicates to control method applicability and by using logical implication between predicates as the overriding relationship. The method selected to handle a message send can depend not just on the classes of the arguments, as in ordinary object-oriented dispatch, but also on the classes of subcompone...
متن کاملPredicate Dispatching: a Uniied Theory of Dispatch
Predicate dispatching generalizes previous method dispatch mechanisms by permitting arbitrary predicates to control method applicability and by using logical implication between predicates as the overriding relationship. The method selected to handle a message send can depend not just on the classes of the arguments, as in ordinary object-oriented dispatch, but also on the classes of subcompone...
متن کاملAn Overview of ALIA4J - An Execution Model for Advanced-Dispatching Languages
New programming languages that allow to reduce the complexity of software solutions are frequently developed, often as extensions of existing languages. Many implementations thus resort to transforming the extension’s source code to the imperative intermediate representation of the parent language. But approaches like compiler frameworks only allow for re-use of code transformations for syntact...
متن کاملMultiple-Dispatching Based on Automata
We present a novel technique for multiple-dispatching. In object-oriented programming languages, multiple-dispatching provides increased expressive power over single-dispatching by guiding method lookup using the values of all arguments instead of the receiver only. However, the efficient implementation for multiple-dispatching is still critical with regard to its success as a standard. There h...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1998